0c43e702a9389a09c0678666fd104ed32ea9e4e3,biojava-structure/src/main/java/org/biojava/nbio/structure/align/ce/CECalculator.java,CECalculator,calc_rmsd,#Atom[]#Atom[]#number#boolean#,1909
Before Change
Atom[] cod2 = getAtoms(pro2, strLen,true);
assert(cod1.length == cod2.length);
SuperPositionSVD svd = new SuperPositionSVD(cod1, cod2);
Matrix matrix = svd.getRotation();
Atom shift = svd.getTranslation();
if ( storeTransform) {
r=matrix;
t = shift;
}
for (Atom a : cod2){
Calc.rotate(a.getGroup(), matrix);
Calc.shift(a.getGroup(), shift);
}
return SuperPositionSVD.getRMS(cod1, cod2);
After Change
public double calc_rmsd(Atom[] pro1, Atom[] pro2, int strLen,
boolean storeTransform) throws StructureException {
Atom[] cod1 = getAtoms(pro1, strLen,false);
Atom[] cod2 = getAtoms(pro2, strLen,true);
Matrix4d trans = SuperPositions.superpose(Calc.atomsToPoints(cod1),
Calc.atomsToPoints(cod2));
Matrix matrix = Matrices.getRotationJAMA(trans);
Atom shift = Calc.getTranslationVector(trans);
if ( storeTransform) {
r = matrix;
t = shift;
}
for (Atom a : cod2)
Calc.transform(a.getGroup(), trans);
return Calc.rmsd(cod1, cod2);